$PBExportHeader$uo_dw_autoinc.sru
$PBExportComments$Objeto dw usado en dw con campos autoincrements!
forward
global type uo_dw_autoinc from uo_dw
end type
end forward

global type uo_dw_autoinc from uo_dw
end type
global uo_dw_autoinc uo_dw_autoinc

type variables
Long		nro_serial
Integer		col_serial
end variables

event sqlpreview;call super::sqlpreview;/* No existe campo autoincrement */
IF col_serial <= 0 Then Return 0

/* Verifico el INSERT.*/
IF request = PreviewFunctionUpdate! Then
	IF sqltype = PreviewInsert! THEN
		If buffer = Primary! or buffer = Filter! Then
			
				Long		rtn = 0
				DwItemStatus	status

				/* Realizo el Insert */
				//rtn = super::Event trigger sqlpreview(request,sqltype,sqlsyntax,buffer,row)
				//if rtn = 0 and sqlca.sqlcode = 0 Then 
				Execute IMMEDIATE :sqlsyntax;
				
				if sqlca.sqlcode = 0 Then 
					col_serial = uof_GetIdentity()
					nro_serial = f_recupera_ult_nro_serial()
					/* Inserto el Nro en la Fila */
					status = GetItemStatus(row,0,buffer)
					uof_SetItem(row,col_serial, String(nro_serial), buffer)

					/* Debo volver a dejar el status de la fila como estaba! */
					if GetItemStatus(row,0,buffer) <> status Then
						/* Debo volver el status a como estaba anteriormente. */
						Uof_SetItemStatus(row,0,buffer, status)
					End If
					
					/* Continuo - no permito que se inserte nuevamente esta fila! */
					Return 2
				Else 
				 /* Error. El error lo setea el dberror event */
					Return 1
				End If
		End If
				
		//	buffer = Delete!
		/* NO existe esta opcion */
	End If
End If

/* OK - Continuo */
Return 0


end event

event updatestart;call super::updatestart;col_serial = uof_GetIdentity()

end event

event updateend;RETURN 0
end event

